@VERSION = 0.029QMS Sans Serif, 0, 8, 5, 13, 11, 11, 2, 0 Courier New, 1, 11, 9, 17, 12, 11, 5, 0  _moverlistsPixels)MS Sans Serif, 0, 8, 5, 13, 11, 11, 2, 0 _foldermover list boxes _resizableClass7 _container _moverlists _moverlists.PixelsClass7 container_folder_folder.chkCreateProjDir zzR+%1 UTa ([&CC   T-U ITHISFORM LOCKSCREENTHISPARENT LSTSELECTED LISTCOUNT LSTSOURCEADDITEMLISTCLEARClick,1qaA1)z cmdRemoveAll commandbutton _base.vcxminitialresize initialformheight initialformwidth addtoarray setsize loopthroughcontrols acontrolstats PixelsClass1_custom _resizablepHeight = 19 Width = 27 initialresize = .T. initialformheight = 0 initialformwidth = 0 Name = "_resizable" customPROCEDURE Click LOCAL i THISFORM.LockScreen = .T. FOR i = 1 to THIS.Parent.lstSelected.ListCount THIS.Parent.lstSource.AddItem(THIS.Parent.lstSelected.List(m.i)) ENDFOR THIS.Parent.lstSelected.Clear THISFORM.LockScreen = .F. ENDPROC Top = 102 Left = 186 Height = 25 Width = 37 FontBold = .T. FontName = "Courier New" FontSize = 11 Caption = "<<" TabIndex = 6 ToolTipText = "Remove All Items" Name = "cmdRemoveAll" _commandbutton %qUTa T+ %C &CC   C  T T-U NCNTTHISFORM LOCKSCREENTHISPARENT LSTSELECTED LISTCOUNTSELECTED LSTSOURCEADDITEMLIST REMOVEITEMClick,1qa1AA1_)jPROCEDURE Click LOCAL nCnt THISFORM.LockScreen = .T. nCnt = 1 DO WHILE m.nCnt <= THIS.Parent.lstSelected.ListCount IF THIS.Parent.lstSelected.Selected(m.nCnt) THIS.Parent.lstSource.AddItem(THIS.Parent.lstSelected.List(m.nCnt)) THIS.Parent.lstSelected.RemoveItem(m.nCnt) ELSE nCnt = m.nCnt + 1 ENDIF ENDDO THISFORM.LockScreen = .F. ENDPROC Top = 71 Left = 186 Height = 25 Width = 37 FontBold = .T. FontName = "Courier New" FontSize = 11 Caption = "<" TabIndex = 5 ToolTipText = "Remove Selected Items" Name = "cmdRemove"  _moverlists. cmdRemove commandbutton _base.vcx_commandbutton zzR+%1 UTa ([&CC   T-U ITHISFORM LOCKSCREENTHISPARENT LSTSOURCE LISTCOUNT LSTSELECTEDADDITEMLISTCLEARClick,1qaA1)zPROCEDURE Click LOCAL i THISFORM.LockScreen = .T. FOR i = 1 to THIS.Parent.lstSource.ListCount THIS.Parent.lstSelected.AddItem(THIS.Parent.lstSource.List(m.i)) ENDFOR THIS.Parent.lstSource.Clear THISFORM.LockScreen = .F. ENDPROC Top = 33 Left = 186 Height = 25 Width = 37 FontBold = .T. FontName = "Courier New" FontSize = 11 Caption = ">>" TabIndex = 4 ToolTipText = "Add All Items" Name = "cmdAddAll"  _moverlists. cmdAddAll commandbutton _base.vcx_commandbutton %qUTa T+ %C &CC   C  T T-U NCNTTHISFORM LOCKSCREENTHISPARENT LSTSOURCE LISTCOUNTSELECTED LSTSELECTEDADDITEMLIST REMOVEITEMClick,1qa1AA1)_initialresize Is this the first time the controls are being adjusted? initialformheight initialformwidth *adjustcontrols Call from resize event of a form to adjust the placement and size of contained objects. *addtoarray *setsize *loopthroughcontrols *reset Resets the Timer control so that it starts counting from 0. ^acontrolstats[1,5] PROCEDURE Click LOCAL nCnt THISFORM.LockScreen = .T. * The ListCount value changes whenever the RemoveItem method is called nCnt = 1 DO WHILE m.nCnt <= THIS.Parent.lstSource.ListCount IF THIS.Parent.lstSource.Selected(m.nCnt) THIS.Parent.lstSelected.AddItem(THIS.Parent.lstSource.List(m.nCnt)) THIS.Parent.lstSource.RemoveItem(m.nCnt) ELSE nCnt = m.nCnt + 1 ENDIF ENDDO THISFORM.LockScreen = .F. ENDPROC Top = 2 Left = 186 Height = 25 Width = 37 FontBold = .T. FontName = "Courier New" FontSize = 11 Caption = ">" TabIndex = 3 ToolTipText = "Add Selected Items" Name = "cmdAdd"  _moverlists.cmdAdd commandbutton _base.vcx_commandbutton %m!+UB %? ;CUNKEYCODE NSHIFTALTCTRLTHISPARENT SELECTALLy%r@%CC n  U NBUTTONNSHIFTNXCOORDNYCOORDTHISPARENTMOUSEX DRAGTHRESHOLDMOUSEYDRAG<TTUNBUTTONNSHIFTNXCOORDNYCOORDTHISPARENTMOUSEXMOUSEY=%6UOSOURCENXCOORDNYCOORDNAMETHISPARENTCMDADDCLICK6 CCCUTHISPARENT LSTSOURCEADDITEMLIST LISTINDEX REMOVEITEMu H n GT nTU OSOURCENXCOORDNYCOORDNSTATEDRAGICONTHISPARENT CANDROPICON NODROPICONKeyPress, MouseMove MouseDownwDragDropDblClickwDragOver1AA21AA31113qA3131aaA2 "A"A#)PROCEDURE KeyPress LPARAMETERS nKeyCode, nShiftAltCtrl IF nKeyCode = 63 AND nShiftAltCtrl = 1 THIS.Parent.SelectAll(THIS) ENDIF ENDPROC PROCEDURE MouseMove LPARAMETERS nButton, nShift, nXCoord, nYCoord IF nButton = 1 && Left Mouse IF ABS(nXCoord - THIS.Parent.MouseX) > THIS.Parent.DragThreshold OR ; ABS(nYCoord - THIS.Parent.MouseY) > THIS.Parent.DragThreshold THIS.Drag ENDIF ENDIF ENDPROC PROCEDURE MouseDown LPARAMETERS nButton, nShift, nXCoord, nYCoord THIS.Parent.MouseX = nXCoord THIS.Parent.MouseY = nYCoord ENDPROC PROCEDURE DragDrop LPARAMETERS oSource, nXCoord, nYCoord IF oSource.Name != THIS.Name THIS.Parent.cmdAdd.Click ENDIF ENDPROC PROCEDURE DblClick THIS.Parent.lstSource.AddItem(This.List(This.ListIndex)) This.RemoveItem(This.ListIndex) ENDPROC PROCEDURE DragOver LPARAMETERS oSource, nXCoord, nYCoord, nState DO CASE CASE nState = 0 && Enter oSource.DragIcon = THIS.Parent.CanDropIcon CASE nState = 1 && Leave oSource.DragIcon = THIS.Parent.NoDropIcon ENDCASE ENDPROC UDragMode = 0 DragIcon = grid\ FontBold = .F. FontName = "MS Sans Serif" FontSize = 8 ColumnCount = 0 ColumnWidths = "" RowSourceType = 0 RowSource = "" ControlSource = "" FirstElement = 1 Height = 132 Left = 240 MoverBars = .T. MultiSelect = .T. NumberOfElements = 0 TabIndex = 2 Top = 0 Width = 169 Name = "lstSelected"  _moverlists. lstSelectedlistbox _base.vcx_listbox _moverlists. lstSourcelistbox _base.vcxTop = 98 Left = 10 Height = 21 Width = 218 FontName = "MS Sans Serif" FontSize = 8 Caption = "\()+|C" C' TTC% TTCDULCVALUE LCPROJECTFILE LCBADCHARS LNSELSTARTTHISSELSTARTVALUE TC UTHISENABLEDPARENTTXTPROJECTNAMEVALUETC.TCC PJX C6%C BC 0%\ : C\ B-TCCCC곛TCCC՛%C\\B5TC\\\CC\\6TCC@% }TBCC֡ U LCVALUELCEXT LCPROJECTFILE LCPROJECTPATHTHISVALUEPARENTCEXTTXTPROJECTNAMEINTERACTIVECHANGEInteractiveChange,Refresh2Valid11a"A331"AqAQQAQ!A2K i )oFontName = "MS Sans Serif" FontSize = 8 Height = 22 InputMask = (REPLICATE("X",128)) Left = 10 TabIndex = 4 Top = 68 Width = 243 Name = "txtProjectFile" txtProjectFiletextboxtextboxFontName = "MS Sans Serif" FontSize = 8 FontExtend = .T. Caption = "Proj\1 lcProjectPath=STRTRAN(lcProjectPath,"\\","\",IIF(LEFTC(lcValue,2)="\\",2,1)) ENDIF lcProjectFile=LOWER(FORCEPATH(lcProjectFile,lcProjectPath)) IF NOT lcValue==lcProjectFile this.Value=lcProjectFile ENDIF RETURN NOT EMPTY(JustStem(lcValue)) ENDPROC  (%PBDU[ >%CC ?/\,=:;{}[]!@#$%^&*.<>()+|C" C' TB-UNKEYCODE NSHIFTALTCTRLTC*%: \ . XTCC"%CC TTULCVALUETHISVALUEPARENTTXTPROJECTFILECLASTPROJECTFILE 4T ?/\,=:;{}[]!@#$%^&*.<>()+|C" C' %C "TCC  TTCC %CTCC]C@%CCQ@TCC]\@%\ .T\#TCCCC 긛TC\%'!TCCCCF굛%C\TCCC곛%C@C@#TC\'TCC곛\\&%: C\\ fTCC]@%C:\T\ %CC@  T T  U LCPROJECTDIR LCPROJECTDIR2 LCPROJECTDIR3 LCPROJECTFILELCPROJECTFILE2 LCBADCHARSLNATPOSTHISPARENTCLASTPROJECTFILETRIMFILETXTPROJECTFILEVALUECEXTREFRESHCMDPROJECTFILE UTHISINTERACTIVECHANGEcTC%CC@CC@I TTU LCPROJECTFILETHISPARENTTXTPROJECTFILEVALUECLASTPROJECTFILEKeyPress,ValidInteractiveChangeProgrammaticChangeyGotFocus1AqA3q"QA!A13qBQ!A1aAA1!A1AAQAqAAaQAaAqAA33qA12 ,;UmD=` H)FontName = "MS Sans Serif" FontSize = 8 Height = 22 InputMask = (REPLICATE("X",128)) Left = 10 TabIndex = 2 Top = 23 Width = 315 Name = "txtProjectName" textboxtextboxFontName = "MS Sans Serif" FontSize = 8 Caption = "P\ THIS.Parent.DragThreshold OR ; ABS(nYCoord - THIS.Parent.MouseY) > THIS.Parent.DragThreshold THIS.Drag ENDIF ENDIF ENDPROC PROCEDURE MouseDown LPARAMETERS nButton, nShift, nXCoord, nYCoord THIS.Parent.MouseX = nXCoord THIS.Parent.MouseY = nYCoord ENDPROC PROCEDURE DragDrop LPARAMETERS oSource, nXCoord, nYCoord IF oSource.Name != THIS.Name THIS.Parent.cmdRemove.Click ENDIF ENDPROC PROCEDURE DblClick THIS.Parent.lstSelected.AddItem(This.List(This.ListIndex)) This.RemoveItem(This.ListIndex) ENDPROC PROCEDURE DragOver LPARAMETERS oSource, nXCoord, nYCoord, nState DO CASE CASE nState = 0 && Enter oSource.DragIcon = THIS.Parent.CanDropIcon CASE nState = 1 && Leave oSource.DragIcon = THIS.Parent.NoDropIcon ENDCASE ENDPROC Width = 409 Height = 132 BackStyle = 0 BorderWidth = 0 mousex = 0 mousey = 0 candropicon = DRAGMOVE.CUR nodropicon = NODROP01.CUR dragthreshold = 8 Name = "_moverlists" `Width = 336 Height = 125 BorderWidth = 0 clastprojectfile = cext = .pjx Name = "_folder" .DragMode = 0 DragIcon = grid\ FontBold = .F. FontName = "MS Sans Serif" FontSize = 8 ColumnCount = 0 ColumnWidths = "" RowSourceType = 0 RowSource = "" ControlSource = "" Height = 132 Left = 0 MultiSelect = .T. NumberOfElements = 0 TabIndex = 1 Top = 0 Width = 169 Name = "lstSource" mousex Stores x coordinate of mouse pointer position. mousey Stores y coordinate of mouse pointer position. candropicon Cursor when dropping is okay. nodropicon Cursor when dropping is not okay. dragthreshold Number of pixels a user has to move the mouse with the left mouse button down for the drag method to be called. *selectall Selects all items in the listbox passed in as a parameter.  >%3 UC(<TaUOLISTLNCNT LISTCOUNTSELECTED/TTUTHIS LSTSOURCEDRAGICON CANDROPICON LSTSELECTED selectall,Init1qqAA2aa2{) PROCEDURE adjustcontrols IF THIS.InitialResize THIS.LoopThroughControls("INITIALIZE_AND_ADJUST") THIS.InitialResize = .F. ELSE THIS.LoopThroughControls("ADJUST") ENDIF ENDPROC PROCEDURE addtoarray LPARAMETERS oControl LOCAL nLen nLen = ALEN(THIS.aControlStats,1) THIS.aControlStats[nLen,1] = oControl.Top / THIS.InitialFormHeight THIS.aControlStats[nLen,2] = oControl.Left / THIS.InitialFormWidth THIS.aControlStats[nLen,3] = oControl.Height / THIS.InitialFormHeight THIS.aControlStats[nLen,4] = oControl.Width / THIS.InitialFormWidth THIS.aControlStats[nLen,5] = IIF(TYPE("oControl.FontSize") = 'U', 0, oControl.FontSize) DIMENSION THIS.aControlStats[nLen+1, 5] ENDPROC PROCEDURE setsize LPARAMETERS oControl, nPos oControl.Top = THISFORM.Height * THIS.aControlStats[nPos,1] oControl.Left = THISFORM.Width * THIS.aControlStats[nPos,2] oControl.Width = THISFORM.Width * THIS.aControlStats[nPos,4] IF !oControl.Baseclass $ "Textbox Spinner" oControl.Height = THISFORM.Height * THIS.aControlStats[nPos,3] ENDIF ENDPROC PROCEDURE loopthroughcontrols LPARAMETERS cTask * Valid parameters for cTask are 'Initialize_And_Adjust' and 'Adjust' LOCAL nOldDecimal, nPos, i, j, k, oControl cTask = UPPER(cTask) nOldDecimal = SET("DECIMAL") SET DECIMAL TO 4 #define BASE_CLASS "Commandbutton Combobox Checkbox Listbox Form Grid Textbox Label Shape Editbox Olecontrol Pageframe Image Spinner" nPos = 0 THISFORM.LockScreen = .T. FOR m.i = 1 TO THISFORM.ControlCount oControl = THISFORM.Controls[m.i] IF oControl.Baseclass$BASE_CLASS nPos = nPos + 1 DO CASE CASE cTask = 'INITIALIZE_AND_ADJUST' THIS.AddToArray(oControl) THIS.SetSize(oControl, nPos) CASE cTask = 'ADJUST' THIS.SetSize(oControl, nPos) ENDCASE ENDIF *A pageframe can contain only pages IF THISFORM.Controls[m.i].Baseclass$"Pageframe" *Loop through each page of the pageframe FOR m.j = 1 TO THISFORM.Controls[m.i].PageCount WITH THISFORM.Controls[m.i].pages[m.j] *loop through all the controls on the page FOR m.k = 1 TO .ControlCount IF .Controls[m.k].Baseclass$BASE_CLASS nPos = nPos + 1 DO CASE CASE cTask = 'INITIALIZE_AND_ADJUST' THIS.AddToArray(.Controls[m.k]) THIS.SetSize(.Controls[m.k], nPos) CASE cTask = 'ADJUST' THIS.SetSize(.Controls[m.k], nPos) ENDCASE ENDIF ENDFOR ENDWITH ENDFOR ENDIF ENDFOR THISFORM.LockScreen = .F. SET DECIMAL TO nOldDecimal ENDPROC PROCEDURE reset THIS.InitialResize = .T. DIMENSION THIS.aControlStats[1,5] ENDPROC PROCEDURE Init THIS.InitialFormHeight = THISFORM.Height THIS.InitialFormWidth = THISFORM.Width ENDPROC  containerPROCEDURE selectall LPARAMETERS oList LOCAL lnCnt FOR lnCnt = 1 to oList.ListCount oList.Selected(lnCnt) = .T. ENDFOR ENDPROC PROCEDURE Init This.lstSource.DragIcon = This.CanDropIcon This.lstSelected.DragIcon = This.CanDropIcon ENDPROC  kPROCEDURE KeyPress LPARAMETERS nKeyCode, nShiftAltCtrl IF AT(CHR(nKeyCode),"?/\,=:;{}[]!@#$%^&*.<>()+|"+CHR(34)+CHR(39))>0 NODEFAULT RETURN .F. ENDIF ENDPROC PROCEDURE Valid LOCAL lcValue lcValue=ALLTRIM(this.Value) IF ":"$lcValue OR "\"$lcValue OR "."$lcValue this.Value=JustStem(ALLTRIM(lcValue)) ENDIF IF EMPTY(lcValue) AND NOT EMPTY(this.parent.txtProjectFile.Value) this.parent.txtProjectFile.Value=THIS.Parent.cLastProjectFile ENDIF THIS.Parent.cLastProjectFile="" ENDPROC PROCEDURE InteractiveChange LOCAL lcProjectDir,lcProjectDir2,lcProjectDir3,lcProjectFile,lcProjectFile2 LOCAL lcBadChars,lnAtPos lcBadChars=" ?/\,=:;{}[]!@#$%^&*.<>()+|"+CHR(34)+CHR(39) IF EMPTY(this.parent.cLastProjectFile) lcProjectDir=THIS.Parent.TrimFile(ALLTRIM(this.parent.txtProjectFile.Value)) lcProjectDir3=lcProjectDir lcProjectFile2=JustStem(ALLTRIM(this.parent.txtProjectFile.Value)) IF EMPTY(lcProjectDir) lcProjectDir=LOWER(SYS(5)+CURDIR()) IF lcProjectDir==LOWER(HOME()) lcProjectDir=LOWER(SYS(5)+"\") ENDIF ENDIF IF NOT "\"$lcProjectDir lcProjectDir="\"+lcProjectDir ENDIF lcProjectFile=ALLTRIM(CHRTRANC(LEFTC(ALLTRIM(this.Value),16),lcBadChars,"")) lnAtPos=AT_C("\",lcProjectDir) IF lnAtPos>0 lcProjectDir2=ALLTRIM(SUBSTRC(lcProjectDir,MIN(lnAtPos+1,LENC(lcProjectDir)))) IF RIGHTC(lcProjectDir2,1)=="\" lcProjectDir2=ALLTRIM(LEFTC(lcProjectDir2,LENC(lcProjectDir2)-1)) ENDIF IF LOWER(lcProjectDir2)==LOWER(lcProjectFile2) lnAtPos=AT_C("\",lcProjectDir3) lcProjectDir=ALLTRIM(LEFTC(lcProjectDir3,lnAtPos-1))+"\"+lcProjectFile+"\" ENDIF ENDIF IF NOT ":"$lcProjectDir AND LEFTC(lcProjectDir,2)#"\\" lcProjectDir=LOWER(SYS(5))+lcProjectDir ENDIF IF RIGHTC(lcProjectDir,2)==":\" lcProjectDir=lcProjectDir+lcProjectFile+"\" ENDIF IF NOT LOWER(RIGHTC(lcProjectFile,4))==THIS.PARENT.cExt lcProjectFile=lcProjectFile+THIS.PARENT.cExt ENDIF this.parent.txtProjectFile.Value=lcProjectDir+lcProjectFile ENDIF this.parent.txtProjectFile.Refresh this.parent.cmdProjectFile.Refresh ENDPROC PROCEDURE ProgrammaticChange this.InteractiveChange ENDPROC PROCEDURE GotFocus LOCAL lcProjectFile lcProjectFile=ALLTRIM(this.parent.txtProjectFile.Value) IF LOWER(JustStem(lcProjectFile))=LOWER(ALLTRIM(this.Value)) lcProjectFile="" ENDIF this.parent.cLastProjectFile=lcProjectFile ENDPROC  %6U[ TC\'TCC C6 BC@U TCFILENAME LCFILENAMELNATPOS7%B-Ta<UTHISLRELEASEtrimfile,release1qAq3AqAq28 )